if(typeof(SYS.User)=='undefined')
{
	SYS.User = {
		id:'guest',
		privileges:{},
		modulePrivileges:{},
		shoppingCart:{},
		wishList:{},
		isReady:false,
		isInit:false,
		init:function(options)
		{
			if($.cookie('userId'))
			{
				SYS.User.id = $.cookie('userId');
			}
			else
			{
				if($.cookie('user_name') && $.cookie('saved_password'))
				{
					$.ajax({
						url: SYS.buildURL({module:'SignIn', user_name:$.cookie('user_name'), saved_password:$.cookie('saved_password')}),
						dataType: 'xml',
						cache:false,
						async: false,
						success:function(data){
							if(data=='0')
							{
								$.cookie('saved_password', null);
								$.cookie('user_name', null);
								SYS.User.id = 'guest';
							}
							else
							{
								SYS.User.id = $.cookie('user_name');
								
							}
							SYS.User.init({});
							SYS.User.isReady = true;
						},
						complete:function(){
							SYS.User.isReady = true;
						}
					});
					return;
				}
			}
			$.extend(SYS.User,options);
			if(SYS.User.id != 'guest')
			{
				if(typeof(SYS.exportUser)!='undefined' && SYS.exportUser)
				{
					$.ajax({
						url:rootURL+'publish/'+SYS.defaultPortalId+'/user/'+SYS.User.id.substr(0,2)+'/'+SYS.User.id+'.xml', 
						dataType:'xml',
						success:function(data)
						{	
							var json = SYS.xml($('root user',data));
							$.extend(SYS.User, json['user-info']);
							$.extend(SYS.User.privileges, json.privileges);
							$.extend(SYS.User.modulePrivileges, json['module-privileges']);
							$.extend(SYS.User.wishList, json['wishlist']);
							$.extend(SYS.User.shoppingCart, json['shopping-cart']);
							SYS.User.isReady = true;
						},
						async:false,
						cache:false
					});
				}
				else
				{
					SYS.User.isReady = true;
				}
			}
			else
			{
				SYS.User.isReady = true;
			}
		},
		checkShoppingCart:function(productId)
		{
			for(var i in SYS.User.shoppingCart)
			{
				if(SYS.User.shoppingCart[i].product_id == productId)
				{
					return true;
				}
			}
			return false;
		},
		checkWishList:function(productId)
		{
			for(var i in SYS.User.wishList)
			{
				if(SYS.User.wishList[i].product_id == productId)
				{
					return true;
				}
			}
			return false;
		},
		isAdmin:function()
		{
			return (typeof(SYS.User.privileges[SYS.defaultPortalId])!='undefined' && typeof(SYS.User.privileges[SYS.defaultPortalId]['Administrators'])!='undefined') || (typeof(SYS.User.privileges[SYS.portalId])!='undefined' && typeof(SYS.User.privileges[SYS.portalId]['Administrators'])!='undefined');
		},
		isLogin:function()
		{
			return this.id && (!this.id.match('Guest_'));
		},
		canDoAction:function(pos,moduleId)
		{
			if(SYS.User.isAdmin())
			{
				return true;
			}
			if(!moduleId)
			{
				if(SYS.blocks[currentBlockId])
				{
					moduleId = SYS.blocks[SYS.currentBlockId].moduleName;
				}
				else
				{
					moduleId=false;
				}
			}
			if(!moduleId)
			{
				return;
			}
			if(typeof(SYS.User.modulePrivileges[SYS.portalId]) != 'undefined')
			{
				if(typeof(SYS.User.modulePrivileges[SYS.portalId][moduleId]) != 'undefined')
				{
					if(SYS.User.modulePrivileges[SYS.portalId][moduleId]&(1 << pos))
					{
						return true;
					}
				}
			}
			return false;
		},
		canView:function(moduleId)
		{
			return SYS.User.canDoAction(0,moduleId);
		},
		canViewDetail:function(moduleId)
		{
			return SYS.User.canDoAction(1,moduleId);
		},
		canAdd:function(moduleId)
		{
			return SYS.User.canDoAction(2,moduleId);
		},
		canEdit:function(moduleId)
		{
			return SYS.User.canDoAction(3,moduleId);
		},
		canDelete:function(moduleId)
		{
			return SYS.User.canDoAction(4,moduleId);
		},
		canModerator:function(moduleId)
		{
			return SYS.User.canDoAction(5,moduleId);
		},
		canDeveloper:function (moduleId)
		{
			return SYS.User.canDoAction(6,moduleId);
		},
		canAdmin:function(moduleId)
		{
			return SYS.User.canDoAction(7,moduleId);
		},
		onlineStatus:function(status)
		{
			return (status == 0)?'Offline':'Online';
		},
		hasPrivilege:function(privilege, success)
		{
			if(success)
			{
				SYS.User.ready(function(){
					if(SYS.User.isAdmin() || (typeof(SYS.User.privileges[SYS.portalId]) != 'undefined' && typeof(SYS.User.privileges[SYS.portalId][privilege]) != 'undefined'))
					{
						success.call(this);
					}
				});
			}
			else
			{
				return SYS.User.isAdmin() || (typeof(SYS.User.privileges[SYS.portalId]) != 'undefined' && typeof(SYS.User.privileges[SYS.portalId][privilege]) != 'undefined');
			}
		},
		ready:function(success)
		{
			if(!SYS.User.isInit)
			{
				SYS.User.isInit = true;
				SYS.User.init({});
			}
			SYS.addActionQueue({
				condition:function()
				{
					return SYS.User.isReady;
				},
				success:function(){
					success.call(this);
				}
			});
		}
	}
}